package com.atguigu.gulimall.common.exception;


/**
 * 系统错误码和错误信息定义类
 * 1. 错误码规则为5个数字
 * 2. 前两位业务场景 后三位错误码， 例如 10001 10：通用， 001 系统未知异常
 * 错误码列表：
 *  10： 通用
 *      001 参数格式校验
 *      002 短信验证码频率太高
 *  11： 商品
 *  12： 订单
 *  13： 购物车
 *  14： 物流
 *  15： 用户
 *
 *
 *
 */
public enum BigCodeEnum implements ErrorCode{

    UNKNOWN_EXCEPTION(10000, "系统未知异常"),
    VALID_EXCEPTION(10001, "参数格式校验失败"),
    SMS_CODE_EXCEPTION(10002, "验证码获取频率太高，稍后再试"),
    PRODUCT_UP_EXCEPTION(11000, "商品上架异常"),
    USER_EXIST_EXCEPTION(15001, "手机号已存在"),
    PHONE_EXIST_EXCEPTION(15002, "账号已存在"),
    LOGINACCT_PASSWORD_INVAILD_EXCEPTION(15003, "账号密码错误"),
    NO_STOCK_EXCEPTION(21000, "商品库存不足");
    private final int code;
    private final String msg;
    BigCodeEnum(final int code, final String msg){
        this.code = code;
        this.msg = msg;
    }
    public int getCode() {
        return code;
    }
    public String getMsg() {
        return msg;
    }

    public static BigCodeEnum getByCode(int code){
        for (BigCodeEnum value : BigCodeEnum.values()) {
            if (code == value.getCode()){
                return value;
            }
        }
        return UNKNOWN_EXCEPTION;
    }

    public static Boolean contains(int code){
        for (BigCodeEnum value : BigCodeEnum.values()) {
            if (code == value.getCode()){
                return true;
            }
        }
        return false;
    }

}
